package com.kmzx.one.project.mapper;

import com.github.pagehelper.Page;
import com.kmzx.one.project.entity.ProductSource;
import com.kmzx.one.project.entity.SourceUserDown;
import com.kmzx.one.project.entity.SourceUserStore;
import com.kmzx.one.project.others.common.IdAndTitle;
import com.kmzx.one.project.others.dto.MateCateOutInfo;
import com.kmzx.one.project.others.dto.MateOutInfo;
import com.kmzx.one.project.others.dto.MaterialDetailInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

import java.util.List;


@Component
@Repository
public interface MaterialMapper {

    // 查找所有的素材分类
    List<MateCateOutInfo> selectAllMateCateInfo();

    Page<MateOutInfo> findAllMaterialById(@Param("cateId") String cateId, @Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);


    Page<MateOutInfo> findAllMaterial(Integer pageNum, Integer pageSize);

    //  用户的素材收藏表
    Page<MateOutInfo> findUserMaterial(String userId);


    List<MaterialDetailInfo> findAllMaterialDetail(@Param("mateId") String mateId, @Param("userId") String userId) throws Exception;

    int downloadMaterial(@Param("mateId") String mateId, @Param("kinds") int kinds);

    int storeMaterial(@Param("mateId") String mateId, @Param("kinds") int kinds);

    int insertUserMaterialStore(SourceUserStore sourceUserStore);

    int insertUserMaterialDown(SourceUserDown sourceUserDown);

    void updateSourceStoreById(SourceUserStore sourceUserStore);

    List<SourceUserStore> selectSourceUserStore(@Param("userId") String userId, @Param("mateId") String mateId);

    List<SourceUserStore> selectSourceUser(@Param("userId") String userId);

    List<SourceUserStore> selectSourceUserStores(@Param("userId") String userId, @Param("mateId") String mateId);

    List<SourceUserStore> selectSourceStore(@Param("mateId") String mateId);

    ProductSource selectProductSourceById(String id);

    List<IdAndTitle> selectMateVideoUrl(List<String> list);
//    int downloadSaveMaterial(Str)
}
